package com.hsnn.medstgmini.settlement.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.hsnn.medstgmini.Constants;
import com.hsnn.medstgmini.base.std.model.HospInfo;
import com.hsnn.medstgmini.base.std.model.form.StdHealthbureauForm;
import com.hsnn.medstgmini.model.Whether;
import com.hsnn.medstgmini.settlement.model.SetAcctInfo;
import com.hsnn.medstgmini.settlement.model.form.SetPaynoticeForm;
import com.hsnn.medstgmini.settlement.service.SetPaynoticeManager;
import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.util.DbUtil;
import com.hsnn.medstgmini.util.Pagination;

@Controller
@RequestMapping("/setPaynotice")
public class SetPaynoticeController {

		@Autowired
		private SetPaynoticeManager setPaynoticeManager;
		@Autowired
		private HttpSession Session;
		
		@Autowired 
		private HttpServletRequest request; 
	
	/**
	 * @category 跳向缴费通知书[中心端]
	 * @Auther 徐国鹏
	 * @date 2015年7月21日 下午4:44:41
	 * @return
	 * @return String
	 */
	@RequestMapping("/toSetPaynotice")
	public String toSetPaynotice() {
		return "/settle/setPaynotice";
	}
	
	/**
	 * @category 获取缴费通知书列表[中心端] 
	 * @Auther 徐国鹏
	 * @date 2015年7月21日 下午5:47:57
	 * @param form
	 * @return Pagination
	 */
	@RequestMapping("/getSettleInfoList")
	@ResponseBody
	public Pagination getPostOrderList(SetPaynoticeForm form) {
		Pagination page = new Pagination(request);
		SysUser user = (SysUser) request.getSession().getAttribute(
				Constants.USERINFO);
		form.setUserId(user.getId());
		page.setForm(form);
		page = setPaynoticeManager.getSettleInfoList(page);
		return page;
	}
	
	/**
	 * @category 跳转医疗机构通知书[医疗机构端] 
	 * @Auther 徐国鹏
	 * @date 2015年7月21日 下午5:53:07
	 * @return String
	 */
	@RequestMapping("/toSetPaynoticeyy")
	public String toSetPaynoticeyy() {
		return "/settle/setPaynoticeyy";
	}
	/**
	 * @category 获得医疗机构缴费通知书[医疗机构端]
	 * @Auther 徐国鹏
	 * @date 2015年7月21日 下午6:14:55
	 * @param form
	 * @return Pagination
	 */
	@RequestMapping("/getsettleInfoListyy")
	@ResponseBody
	public Pagination getsettleInfoListyy(SetPaynoticeForm form) {
		Pagination page = new Pagination(request);
		SysUser user = (SysUser) request.getSession().getAttribute(
				Constants.USERINFO);
		String hospId = ((HospInfo) user.getInfo()).getHospId();
		form.setHospId(hospId);
		form.setUserId(user.getId());
		page.setForm(form);
		page = setPaynoticeManager.getSettleInfoListyy(page);
		return page;
	}
	

		/**
		* @category 缴款通知书详情[医疗机构端]
		* @Auther 徐国鹏
		* @date 2015年7月22日 下午6:32:14
		* @return String
		*/
		@RequestMapping("/toSetPaynoticeDetail")
		public String toSetPaynoticeDetail() {
		return "/settle/setPaynoticeDetailyy";
		}
		/**
		 * @category 获取缴款通知书详情[医疗机构端]
		 * @Auther 徐国鹏
		 * @date 2015年7月22日 下午6:33:49
		 * @return Pagination
		 */
		@RequestMapping("/getSetPaynoticeDetailList")
		@ResponseBody
		public Pagination getSetPaynoticeDetailList(){
			Pagination page = new Pagination(request);
			DbUtil.jsonToMap(request, page);
			SysUser user = (SysUser) request.getSession().getAttribute(
					Constants.USERINFO);
			page.getConditions().put("hospId", user.getOrgId());
			return setPaynoticeManager.getSetPaynoticeDetailList(page);
		}

	
	
	/**
	 * @category 缴款通知书[核算中心端]
	 * @Auther 徐国鹏
	 * @date 2015年7月22日 上午9:06:27
	 * @return String
	 */
	@RequestMapping("/toSetPaynoticehs")
	public String toSetPaynoticehs() {
		return "/settle/setPaynoticehs";
	}
	/**
	 * @category 获取核算中心缴款通知书[核算中心端]
	 * @Auther 徐国鹏
	 * @date 2015年7月22日 上午9:08:14
	 * @param form
	 * @return Pagination
	 */
	@RequestMapping("/getsettleInfoLisths")
	@ResponseBody
	public Pagination getsettleInfoLisths(StdHealthbureauForm form) {
		Pagination page = new Pagination(request);
		SysUser user = (SysUser) request.getSession().getAttribute(Constants.USERINFO);
		String heaBurId = "";// 核算中心Id
		if (user.getMain() == Whether.yes.getKey()) {
			heaBurId = user.getId();
		} else { // 非主帐号获取主帐号帐户信息
			heaBurId = user.getRootUser().getId();
		}
		form.setHeaBurId(heaBurId);
		page.setForm(form);
		page = setPaynoticeManager.getSettleInfoLisths(page);
		return page;
	}
		/**
		* @category 缴款通知书详情[核算中心]
		* @Auther 徐国鹏
		* @date 2015年7月22日 下午6:32:14
		* @return String
		*/
		@RequestMapping("/toSetPaynoticeDetailhs")
		public String toSetPaynoticeDetailhs() {
			request.setAttribute("noticeId",request.getParameter("noticeId"));
		return "/settle/setPaynoticeDetailhs";
		}
		
		/**
		* @category 获取缴款通知书详情[医疗机构端]
		* @Auther 徐国鹏
		* @date 2015年7月22日 下午6:33:49
		* @return Pagination
		*/
		@RequestMapping("/getSetPaynoticehsDetailList")
		@ResponseBody
		public Pagination getSetPaynoticehsDetailList(StdHealthbureauForm form){
			Pagination page = new Pagination(request);
			page.setForm(form);
			page = setPaynoticeManager.getSetPaynoticehsDetailList(page);
			return page;
		}


		/**
		 * @category 缴款通知书详情[中心端]
		 * @Auther 徐国鹏
		 * @date 2015年7月24日 上午8:32:26
		 * @return String
		 */
		@RequestMapping("/toSetPaynoticeDetailzx")
		public String toSetPaynoticeDetailzx(Model model, String noticeId,String hospCode) {
			model.addAttribute("setPaynotice", setPaynoticeManager.getSetPaynoticeById(noticeId));
			SetAcctInfo setAcctInfo= setPaynoticeManager.getSetAcctInfoById(hospCode);
			model.addAttribute("setAcctInfo",setAcctInfo );
			model.addAttribute("setRelationship",setPaynoticeManager.getSetRelationshipById(setAcctInfo.getOrgId()) );
			return "/settle/setPaynoticeDetailTemp";
		}
		
		/**
		 * @category 获取缴款通知书详情数据[中心端]
		 * @Auther 徐国鹏
		 * @date 2015年7月24日 上午8:33:42
		 * @param form
		 * @return Pagination
		 */
		@RequestMapping("/getSetPaynoticeDetailListzx")
		@ResponseBody
		public Pagination getSetPaynoticeDetailListzx(SetPaynoticeForm form){
			Pagination page = new Pagination(request);
			page.setForm(form);
			page.getConditions().put("goodsCode", request.getParameter("goodsCode"));
			page = setPaynoticeManager.getSetPaynoticeDetailListzx(page);
			return page;
		}
		
		/**
		 * @category 跳转到卫生局缴款单列表页面[卫生局]
		 * @Auther 周奇
		 * @date 2015年8月6日16:28:51
		 * @param form
		 * @return Pagination
		 */
		@RequestMapping("/toPaynoticListForHeathBeau")
		public String toPaynoticListForHeathBeau(){
			return "/settle/setPaynoticListForHeathBeau";
		}
		
		/**
		 * @category 跳转到卫生局缴款单详情页面[卫生局]
		 * @Auther 周奇
		 * @date 2015年8月6日16:28:51
		 * @param form
		 * @return Pagination
		 */
		@RequestMapping("/toPaynoticDetailForHeathBeau")
		public String toPaynoticDetailForHeathBeau(Model model, String noticeId){
			model.addAttribute("noticeId", noticeId);
			return "/settle/setPaynoticDetailForHeathBeau";
		}
		/**
		 * @category 获取缴款通知书列表[卫生局]
		 * @Auther 周奇
		 * @date 2015年8月6日16:28:51
		 * @param form
		 * @return Pagination
		 */
		@RequestMapping("/getPaynoticListForHeathBeau")
		@ResponseBody
		public Pagination getPaynoticListForHeathBeau(StdHealthbureauForm form){
			Pagination page = new Pagination(request);
			SysUser user = (SysUser) request.getSession().getAttribute(
					Constants.USERINFO);
			form.setUserId(user.getId());
			page.setForm(form);
			page = setPaynoticeManager.getPaynoticListForHeathBeau(page);
			return page;
		}
		
		/**
		 * @category 获取缴款通知书详情数据[卫生局]
		 * @Auther 周奇
		 * @date 2015年7月24日 上午8:33:42
		 * @param form
		 * @return Pagination
		 */
		@RequestMapping("/getPaynoticDetailForHeathBeau")
		@ResponseBody
		public Pagination getPaynoticDetailForHeathBeau(StdHealthbureauForm form){
			Pagination page = new Pagination(request);
			if(StringUtils.isNotBlank(request.getParameter("noticeId"))){
				form.setNoticeId(request.getParameter("noticeId"));
			}
			page.getConditions().put("delDetailId", request.getParameter("delDetailId"));
			page.getConditions().put("goodsCode", request.getParameter("goodsCode"));
			page.getConditions().put("settleSchBegTime", request.getParameter("settleSchBegTime"));
			page.getConditions().put("settleSchEndTime", request.getParameter("settleSchEndTime"));
			page.setForm(form);
			page = setPaynoticeManager.getPaynoticDetailForHeathBeau(page);
			return page;
		}
		
		
}
